Configurando proxy para CLI
Motivação
O objetivo é utilizar proxies como Owasp Zap, Burp Suite e Caido com CLIs para possibilitar interceptação de requests.
Proposta
Aplicações escritas em Go com frequência utilizam a lib padrão http/net. Dentro dessa lib, é possível definir a variável de ambiente HTTP_PROXY que caso seja definida, redirecionará as requests para o endereço especificado permitindo interceptar as requests. Vale ressaltar que essa variável também é utilizada por outras libs e aplicações (não se restringindo apenas a Go).
Passo a Passo
Inicialmente, devemos obter o Certificate Authority, processo que depende do proxy sendo utilizado.
burpsuite
Para obter o certificado, você pode acessar a interface do Burp Proxy diretamente no navegador visitando http://burpsuite ou inserindo a URL do seu escutador de Proxy, por exemplo: http://127.0.0.1:8080.
Você pode baixar uma cópia do certificado CA (Certificate Authority) do Burp.
caido
- Após iniciar o Caido em sua máquina, navegue até
localhost:8080
(ou a porta que você configurou para que o Caido escute) e faça login.
- Clique no ícone da sua conta no canto superior-direito da janela do Caido.
- Selecione a aba "CA Certificate" ou navegue até http://localhost:8080/#/settings/certificate..
Utilizando certificados de sistema
Considerando que a ferramenta que receberá as requests está configurada ouvindo em 127.0.0.1:8080, exporta-se a variável de ambiente da seguinte maneira:
export HTTPS_PROXY="http://localhost:8080"
Para interceptar pacotes HTTPS/TLS, é necessário instalar o CA (Certificate Authority) do proxy. Com esse arquivo em mãos (com extensão .crt ou .cer) deve-se mover o certificado para o seguinte diretório /usr/share/ca-certificates/trust-source/anchors
, após mover o arquivo para o diretório, rode o seguinte comando para instalar o certificado: sudo update-ca-trust extract
Para mais informações a respeito de gerenciamento de CAs.
Resultados
Com tudo funcionando, é possível interceptar as requests e ver exatamente o que está sendo enviado pela CLI, isso pode ser especialmente útil para testes de segurança e debugging em geral.